﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using TheBullysStore.Models.ModuloVentas.WebPage;
using System.Configuration;
using System.Data.SqlClient;

namespace TheBullysStore.Models.ModuloVentas.Propiedades
{
    public class ViviendaFacade
    {
        public PropiedadesBean ViviendaDetalles(PropiedadesBean vivienda) {
            try
            {

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT * FROM propiedad_en_venta WHERE id_propiedad="+vivienda.id_propiedad.ToString();
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                System.Diagnostics.Debug.WriteLine("try");
                PropiedadesBean la_propiedad = new PropiedadesBean();
                while (dataReader.Read())
                {
                    System.Diagnostics.Debug.WriteLine("+1");
                    
                    la_propiedad.id_propiedad = Convert.ToString(dataReader["Id_Propiedad"]);
                    la_propiedad.direccion = Convert.ToString(dataReader["Direccion"]);
                    la_propiedad.precio_base = Convert.ToString(dataReader["PrecioBase"]);
                    la_propiedad.descripcion = Convert.ToString(dataReader["Descripcion"]);
                    la_propiedad.url = Convert.ToString(dataReader["url"]);
                    la_propiedad.area = Convert.ToString(dataReader["AreaTotal"]);
                    la_propiedad.area_construida = Convert.ToString(dataReader["AreaConstruida"]);
                    la_propiedad.nro_banos = Convert.ToString(dataReader["NroBanos"]);
                    la_propiedad.nro_dormitorios = Convert.ToString(dataReader["NroDormitorios"]); 
                }




                dataReader.Close();
                sqlCon.Close();


                cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                commandString = "SELECT Url FROM Imagen WHERE Estado=1 AND Id_Relacionado=" + vivienda.id_propiedad.ToString() + "ORDER BY Id_Imagen  DESC";
                sqlCmd = new SqlCommand(commandString, sqlCon);

                dataReader = sqlCmd.ExecuteReader();

              
                int k=1;
                while (dataReader.Read())
                {
                    System.Diagnostics.Debug.WriteLine("+1");
                    if (k == 1) la_propiedad.url1 = Convert.ToString(dataReader["Url"]);
                    if (k == 2) la_propiedad.url2 = Convert.ToString(dataReader["Url"]);
                    if (k == 3) la_propiedad.url3 = Convert.ToString(dataReader["Url"]);
                    if (k == 4) la_propiedad.url4 = Convert.ToString(dataReader["Url"]);
                    if (k == 5) la_propiedad.url5 = Convert.ToString(dataReader["Url"]);
                    k++;
                }







                dataReader.Close();
                sqlCon.Close();
                return la_propiedad;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("ERROR");
                return null;
            }
        }
        public List<PropiedadesBean> ListarViviendas(ViviendaBean vivienda){
            try
            {
                List<PropiedadesBean> lista = new List<PropiedadesBean>();

                String cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                SqlConnection sqlCon = new SqlConnection(cadenaConfiguracion);

                sqlCon.Open();

                string commandString = "SELECT Direccion, PrecioBase, Descripcion, TipoInmueble, X, Y, url, id_propiedad FROM propiedad_en_venta WHERE";
                commandString += " (Estado = 1)";
                if (!(vivienda.tipo1.Equals("false") && vivienda.tipo2.Equals("false") && vivienda.tipo3.Equals("false") && vivienda.tipo4.Equals("false")))
                {
                    int aux = 0;
                    if(!(vivienda.tipo1.Equals("false")))aux=aux+1;
                    if (!(vivienda.tipo2.Equals("false"))) aux = aux + 10;
                    if (!(vivienda.tipo3.Equals("false"))) aux = aux + 100;
                    if (!(vivienda.tipo4.Equals("false"))) aux = aux + 1000;                    
                    if (aux == 0010) commandString += "AND (TipoInmueble = 2)";
                    if (aux == 0100) commandString += "AND (TipoInmueble = 3)";
                    if (aux == 1000) commandString += "AND (TipoInmueble = 4)";
                    if (aux == 0001) commandString += "AND (TipoInmueble = 1)";
                    if (aux == 0011) commandString += "AND (TipoInmueble = 1 OR TipoInmueble = 2)";
                    if (aux == 0101) commandString += "AND (TipoInmueble = 1 OR TipoInmueble = 3)";
                    if (aux == 1001) commandString += "AND (TipoInmueble = 1 OR TipoInmueble = 4)";
                    if (aux == 0110) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 2)";
                    if (aux == 1010) commandString += "AND (TipoInmueble = 2 OR TipoInmueble = 4)";
                    if (aux == 1100) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 4)";
                    if (aux == 0111) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 2 OR TipoInmueble = 1)";
                    if (aux == 1101) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 4 OR TipoInmueble = 1)";
                    if (aux == 1011) commandString += "AND (TipoInmueble = 4 OR TipoInmueble = 2 OR TipoInmueble = 1)";
                    if (aux == 1110) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 2 OR TipoInmueble = 4)";
                    if (aux == 1111) commandString += "AND (TipoInmueble = 3 OR TipoInmueble = 2 OR TipoInmueble = 1 OR TipoInmueble = 4)";
                }

                if (!(vivienda.precio1 == null)) commandString += "AND (PrecioBase > "+vivienda.precio1+")";
                if (!(vivienda.precio2 == null)) commandString += "AND (PrecioBase < " + vivienda.precio1 + ")";
                int aux2 = Convert.ToInt32(vivienda.distrito);
                if (aux2 != 0) {
                    aux2 =aux2 +1235;
                    commandString += "AND (id_distrito = "+aux2+")";
                }
                System.Diagnostics.Debug.WriteLine(aux2);
                System.Diagnostics.Debug.WriteLine("DATOS: "+vivienda.ToString());
                System.Diagnostics.Debug.WriteLine("COM: " + commandString);
                SqlCommand sqlCmd = new SqlCommand(commandString, sqlCon);

                SqlDataReader dataReader = sqlCmd.ExecuteReader();
                System.Diagnostics.Debug.WriteLine("try");
                while (dataReader.Read())
                {
                    System.Diagnostics.Debug.WriteLine("+1");
                    PropiedadesBean la_propiedad = new PropiedadesBean();
                    la_propiedad.id_propiedad = Convert.ToString(dataReader["Id_Propiedad"]);
                    la_propiedad.direccion = Convert.ToString(dataReader["Direccion"]);
                    la_propiedad.precio_base = Convert.ToString(dataReader["PrecioBase"]);
                    la_propiedad.descripcion = Convert.ToString(dataReader["Descripcion"]);
                    la_propiedad.url = "../Files/no_image.jpg";
                    lista.Add(la_propiedad);
                }




                dataReader.Close();
                sqlCon.Close();

                for(int i=0;i< lista.Count;i++){
                    cadenaConfiguracion = ConfigurationManager.ConnectionStrings["TheBullysStore"].ConnectionString;

                    sqlCon = new SqlConnection(cadenaConfiguracion);

                    sqlCon.Open();

                    commandString = "SELECT Url FROM Imagen WHERE Estado=1 AND Id_Relacionado=" + lista[i].id_propiedad.ToString() + "ORDER BY Id_Imagen  DESC";
                    sqlCmd = new SqlCommand(commandString, sqlCon);

                    dataReader = sqlCmd.ExecuteReader();


                    int k = 1;
                    while (dataReader.Read())
                    {
                        System.Diagnostics.Debug.WriteLine("+1");
                        if (k == 1) lista[i].url ="../Files/"+ Convert.ToString(dataReader["Url"]);

                        k++;
                    }
                
                }

               







                dataReader.Close();
                sqlCon.Close();

                return lista;
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.WriteLine("ERROR");
                return null;
            }

        }
    }
}